openapi: 3.0.1
info:
  title: BIC- ePlanning to Council API
  description: >
    # Authentication    


    Please use the subscription key provided by the Department to access the
    APIs.
  contact: {}
  version: v1
servers:
  - url: /
paths:
  /CreateBIC/{CaseID}:
    post:
      summary: CreateBIC
      description: >-
        This operation transfers the application created by the applicant from
        the Building Information certificate Service to the council's IT system.
      operationId: post-createBIC-caseid
      parameters:
        - name: CaseID
          in: path
          description: A fully qualified Planning BIC case
          required: true
          schema:
            type: string
        - name: OrganisationID
          in: header
          description: >-
            Used by the API gateway to identify the agency to which the response
            needs to be routed to.
          required: true
          schema:
            type: string
      requestBody:
        description: Information request object
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBIC'
        required: true
      responses:
        '201':
          description: Created
          content: {}
        '400':
          description: Invalid request supplied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '412':
          description: Planning Certificate case already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: applicable field values not provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      deprecated: false
      x-codegen-request-body-name: body
  /UpdateBIC/{CaseID}:
    put:
      summary: UpdateBIC
      description: >-
        This operation transfers the application updates from the Building
        Information certificate Service to the council's IT system.
      operationId: UpdateBIC
      parameters:
        - name: CaseID
          in: path
          description: A fully qualified Planning BIC case
          required: true
          schema:
            type: string
        - name: OrganisationID
          in: header
          description: >-
            Used by the API gateway to identify the agency to which the response
            needs to be routed to.
          required: true
          schema:
            type: string
      requestBody:
        description: Information request object
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateBIC'
        required: true
      responses:
        '201':
          description: Created
          content: {}
        '400':
          description: Invalid request supplied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '412':
          description: Planning Certificate case already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: applicable field values not provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      deprecated: false
      x-codegen-request-body-name: body
  /ResponseToDeferredDetermination/{CaseID}:
    put:
      summary: ResponseToDeferredDetermination
      description: >-
        This operation transfers defer determination information provided by the
        applicant from the Building Information certificate Service to the
        relevant organisation's IT system.
      operationId: put-DeferDetermination-caseid
      parameters:
        - name: CaseID
          in: path
          description: A fully qualified application number or case id
          required: true
          schema:
            type: string
        - name: OrganisationID
          in: header
          description: >-
            Used by the API gateway to identify the agency to which the response
            needs to be routed to.
          required: true
          schema:
            type: string
        - name: IdempotencyId
          in: header
          description: >-
            Unique Id for this request. Allows the API to respond in an
            idempotent way if it has already been called with these parameters
            and prevents duplicate processing. Typically a UUID such as
            "63a9ba30-7a4b-4fac-b343-d1f05cf089f1"
          required: true
          schema:
            type: string
      requestBody:
        description: Information request object
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeferDetermination'
        required: true
      responses:
        '200':
          description: Case ID (AI) created
          content: {}
        '400':
          description: Invalid request supplied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      x-codegen-request-body-name: body
components:
  schemas:
    Location:
      title: Location
      required:
        - address
        - isPrimary
        - lga
      type: object
      properties:
        address:
          maxLength: 250
          type: string
          description: Address of the proposed development.
          example: 19-33 Elizabeth Street, Narrandera, 2700
          minLength: 1
        addressDetail:
          $ref: '#/components/schemas/AddressDetail'
        addressNotDisplayed:
          type: boolean
          description: This is to indicate if address is present in the system or not.
        lotList:
          type: array
          items:
            $ref: '#/components/schemas/LotSectionPlan'
        lga:
          maxLength: 30
          type: string
          description: Local Government Area under which the application falls.
          example: PENRITH
          minLength: 1
        isPrimary:
          type: boolean
          description: This is to track the primary address for the application.
    AddressDetail:
      required:
        - latitude
        - longitude
        - postCode
        - state
        - streetName
        - suburb
      type: object
      properties:
        complexUnitType:
          type: string
        complexLevelType:
          type: string
        complexLevelNumber:
          type: string
        complexUnitIdentifier:
          type: string
        streetNumber1:
          type: string
        streetNumber2:
          type: string
        streetName:
          type: string
          minLength: 1
        streetSuffix:
          type: string
        streetType:
          type: string
        suburb:
          type: string
          minLength: 1
        latitude:
          type: number
        longitude:
          type: number
        wkid:
          type: string
        cadastralID:
          type: string
        primarySecondary:
          type: string
        state:
          type: string
          minLength: 1
        postCode:
          type: number
    LotSectionPlan:
      required:
        - lotsectionplan
      type: object
      properties:
        lotsectionplan:
          type: string
          example: 1/-/SPXXXXX
          minLength: 1
    Person:
      title: Person
      required:
        - address
        - email
        - familyName
        - firstName
        - contactNumber
      type: object
      properties:
        firstName:
          maxLength: 20
          type: string
          minLength: 1
        otherName:
          maxLength: 20
          type: string
        familyName:
          maxLength: 20
          type: string
          minLength: 1
        contactNumber:
          maxLength: 10
          minLength: 8
          pattern: ^[0-9]+$
          type: string
        email:
          maxLength: 250
          type: string
          format: email
          minLength: 1
        address:
          maxLength: 250
          type: string
          description: Required as a part of applicant details.
          minLength: 1
    payerPersonDetails:
      title: Person
      required:
        - email
        - familyName
        - firstName
        - billingAddress
      type: object
      properties:
        firstName:
          maxLength: 20
          type: string
          minLength: 1
        otherName:
          maxLength: 20
          type: string
        familyName:
          maxLength: 20
          type: string
          minLength: 1
        contactNumber:
          maxLength: 10
          minLength: 8
          pattern: ^[0-9]+$
          type: string
        email:
          maxLength: 250
          type: string
          format: email
          minLength: 1
        billingAddress:
          maxLength: 250
          type: string
          description: Required as a part of applicant details.
          minLength: 1
    SiteAccessPerson:
      title: SiteAccessPerson
      type: object
      properties:
        title:
          $ref: '#/components/schemas/Title'
        firstName:
          maxLength: 20
          type: string
        otherName:
          maxLength: 20
          type: string
        familyName:
          maxLength: 20
          type: string
        contactNumber:
          maxLength: 10
          minLength: 8
          pattern: ^[0-9]+$
          type: string
        email:
          maxLength: 250
          type: string
          format: email
      description: >-
        This is to track the details of the person that will provide access to
        the site, if different to the primary applicant.
    Error:
      title: Error
      required:
        - errorCode
        - statusCode
      type: object
      properties:
        statusCode:
          type: integer
          format: int32
          example: 404
        message:
          type: string
          example: Internal Server error 19876
        activityId:
          type: string
          example: 00000011-0ab-xy00-0000-500000000000
        errorCode:
          type: string
          example: DPE_TMS01
          minLength: 1
        errorDetails:
          type: string
          example: Inner Exceptions, Stack Trace, etc
    PersonBody:
      title: PersonBody
      required:
        - contactNumber
        - email
        - familyName
        - firstName
      type: object
      properties:
        firstName:
          maxLength: 20
          type: string
          example: John
          minLength: 1
        familyName:
          maxLength: 20
          type: string
          example: Smith
          minLength: 1
        email:
          maxLength: 250
          type: string
          description: User must be registered in the planning portal
          example: john.smith@gmail.com
          minLength: 1
        contactNumber:
          maxLength: 10
          minLength: 8
          pattern: ^[0-9]+$
          type: string
    DownloadableDocument:
      title: DownloadableDocument
      required:
        - documentName
        - documentType
        - documentURL
        - updatedBy
        - uploadedDateTime
      type: object
      properties:
        documentName:
          maxLength: 150
          type: string
          description: documentName has to be appended with file extension
          example: test.docx
          minLength: 1
        documentType:
          maxLength: 100
          type: string
          minLength: 1
        uploadedDateTime:
          type: string
          format: date-time
          minLength: 1
        documentURL:
          maxLength: 500
          type: string
          description: URL of the document to be downloaded
          minLength: 1
        documentSize:
          description: This indicates the file size of the document in bytes
          type: number
        updatedBy:
          type: string
          description: Role of the person who uploaded document.
          minLength: 1
    UpdatedBy:
      title: UpdatedBy
      type: object
      properties:
        person:
          $ref: '#/components/schemas/PersonBody'
    applicantList:
      type: object
      required:
        - applyOnBehalfOfCompany
      properties:
        applyOnBehalfOfCompany:
          type: boolean
          description: >-
            This property will hold whether the applicant is company or Not. If
            YES need to provide the company details.
        contactDetails:
          $ref: '#/components/schemas/applicantDetails'
        isManualEntry:
          type: boolean
          description: >-
            This is to indicate manual entry of company details; flag if ABN/ACN
            search is not giving desired company details.
        applicantCompany:
          $ref: '#/components/schemas/applicantCompany'
      description: used to hold owner’s Corporation details.
    CreateBIC:
      title: CreateBIC
      required:
        - caseStatus
        - declarations
        - reasonForApplying
        - securityConditions
        - siteAddresses
        - structureDescription
      type: object
      properties:
        caseStatus:
          maxLength: 80
          type: string
          description: Status of the BIC case
          example: Submitted
          minLength: 1
        isPrimaryApplicant:
          type: string
          description: >-
            This is to track primary applicant type for the application. One of
            the below mentioned values must be selected for the field. 1. The
            landowner 2. A representative of the landowner 3. The purchaser of a
            property under a contract of sale 4. A public authority that has
            notified the owner that you are applying for a Building Information
            Certificate
          example: Refer to description for values.
        primaryApplicant:
          $ref: '#/components/schemas/applicantList'
        additionalApplicants:
          type: array
          items:
            $ref: '#/components/schemas/applicantList'
        securityConditions:
          type: boolean
          description: >-
            This is to track if there are any security or site conditions that
            may impact on the person undertaking the inspection.
        detailsOfSecurityConditions:
          maxLength: 512
          type: string
          description: >-
            This is to track the detailed description of the security or site
            conditions that impact the person undertaking the inspection.
            Visible if SecurityConditions is true.
        siteAccessPersonDetails:
          $ref: '#/components/schemas/SiteAccessPerson'
        siteAddresses:
          type: array
          items:
            $ref: '#/components/schemas/Location'
        listOfBuildingStructures:
          type: array
          items:
            $ref: '#/components/schemas/buildingStructureList'
        structureDescription:
          type: string
          description: >-
            This is to track the detailed description of the structures the
            Building Information Certificate would apply to.
          minLength: 1
        reasonForApplying:
          type: string
          description: >-
            This is to track the reason why Building Information Certificate is
            applied. One of the below values must be selected. 1. Property
            sale/purchase 2. Review unauthorised work 3. Other
          example: Refer to description for values.
          minLength: 1
        doWorkHave:
          type: array
          description: >-
            This is to track the consent or certificate information for the
            works proposed. Visible if reasonForApplying is Review unauthorised
            work.
          items:
            $ref: '#/components/schemas/BICWorkList'
        worksErectedOrAlteredinMonth:
          type: string
          description: >-
            This is to track the month the works erected or altered. Visible if
            reasonForApplying is Review unauthorised work or Other.
          example: March
        worksErectedOrAlteredinYear:
          type: number
          description: >-
            This is to track the year the works erected or altered. Visible if
            reasonForApplying is Review unauthorised work or Other. No future
            dates are accepted. It's a mandatory field
          example: 2021
        isWorksErectAlterDateUnknown:
          type: boolean
          description: >-
            This is to indicate the month and year the works erected or altered
            is not known. Visible if reasonForApplying is Review unauthorised
            work or Other.
        reasonforOther:
          type: string
          description: >-
            This is to track the detailed description of other reason mentioned
            for appliying certificate. Visible and required if applicant selects
            reasonForApplying as Other.
        contractorDetails:
          title: contractorDetails
          type: object
          properties:
            constructionPersonDetails:
              $ref: '#/components/schemas/ConstructionPersonDetails'
            isLicenseorPermitNumberUnknown:
              type: boolean
            valueOfBuildWorksWithoutConsent:
              type: number
              description: >-
                This is to track the value of works carried out with no consent
                or certificate. Required if "Why are you applying for this
                certificate?" is selected as "Review unauthorised work" OR
                "Other".
              format: decimal
              maxLength: 10
            floorArea:
              type: number
              format: decimal
              maxLength: 10
            isAttachedToAuthorisedBuilding:
              type: boolean
          description: >-
            Applicable when reasonForApplying is Review unauthorised work or
            Other
        payerInformation:
          type: object
          required:
            - payerType
          properties:
            payerType:
              type: string
              description: >-
                To differentiate whether the payer is a company or an
                individual. 1. Individual 2. A company, business, government
                entity or other similar body
              example: Refer to description for values.
              minLength: 1
            payerPerson:
              $ref: '#/components/schemas/payerPerson'
            isManualEntry:
              type: boolean
              description: >-
                Used to indicate manual entry for payer company infromation if
                search ABN/ACN has not given desired payer company details. ABN
                and address of the payment company are mandatory company
                information is selected from system. Company name and address
                are mandatory if manually provided.
            payerCompany:
              $ref: '#/components/schemas/payerCompany'
        isResend:
          type: boolean
          description: >-
            This is to track if application details are resent. True indicates a
            retriggered event.
        documents:
          type: array
          items:
            $ref: '#/components/schemas/DownloadableDocument'
        declarations:
          type: array
          items:
            $ref: '#/components/schemas/Declaration'
        updatedBy:
          $ref: '#/components/schemas/UpdatedBy'
    UpdateBIC:
      title: UpdateBIC
      required:
        - caseStatus
        - declarations
        - reasonForApplying
        - securityConditions
        - siteAddresses
        - structureDescription
      type: object
      properties:
        caseStatus:
          maxLength: 80
          type: string
          description: Status of the BIC case
          example: Submitted
          minLength: 1
        isPrimaryApplicant:
          type: string
          description: >-
            This is to track primary applicant type for the application. One of
            the below mentioned values must be selected for the field. 1. The
            landowner 2. A representative of the landowner 3. The purchaser of a
            property under a contract of sale 4. A public authority that has
            notified the owner that you are applying for a Building Information
            Certificate
          example: Refer to description for values.
        primaryApplicant:
          $ref: '#/components/schemas/applicantList'
        additionalApplicants:
          type: array
          items:
            $ref: '#/components/schemas/applicantList'
        securityConditions:
          type: boolean
          description: >-
            This is to track if there are any security or site conditions that
            may impact on the person undertaking the inspection.
        detailsOfSecurityConditions:
          maxLength: 512
          type: string
          description: >-
            This is to track the detailed description of the security or site
            conditions that impact the person undertaking the inspection.
            Visible if SecurityConditions is true.
        siteAccessPersonDetails:
          $ref: '#/components/schemas/SiteAccessPerson'
        siteAddresses:
          type: array
          items:
            $ref: '#/components/schemas/Location'
        listOfBuildingStructures:
          type: array
          items:
            $ref: '#/components/schemas/buildingStructureList'
        structureDescription:
          type: string
          description: >-
            This is to track the detailed description of the structures the
            Building Information Certificate would apply to.
          minLength: 1
        reasonForApplying:
          type: string
          description: >-
            This is to track the reason why Building Information Certificate is
            applied. One of the below values must be selected. 1. Property
            sale/purchase 2. Review unauthorised work 3. Other
          example: Refer to description for values.
          minLength: 1
        doWorkHave:
          type: array
          description: >-
            This is to track the consent or certificate information for the
            works proposed. Visible if reasonForApplying is Review unauthorised
            work.
          items:
            $ref: '#/components/schemas/BICWorkList'
        worksErectedOrAlteredinMonth:
          type: string
          description: >-
            This is to track the month the works erected or altered. Visible if
            reasonForApplying is Review unauthorised work or Other.
          example: March
        worksErectedOrAlteredinYear:
          type: number
          description: >-
            This is to track the year the works erected or altered. Visible if
            reasonForApplying is Review unauthorised work or Other.
          example: 2021
        isWorksErectAlterDateUnknown:
          type: boolean
          description: >-
            This is to indicate the month and year the works erected or altered
            is not known. Visible if reasonForApplying is Review unauthorised
            work or Other.
        reasonforOther:
          type: string
          description: >-
            This is to track the detailed description of other reason mentioned
            for appliying certificate. Visible and required if applicant selects
            reasonForApplying as Other.
        contractorDetails:
          title: contractorDetails
          type: object
          properties:
            constructionPersonDetails:
              $ref: '#/components/schemas/ConstructionPersonDetails'
            isLicenseorPermitNumberUnknown:
              type: boolean
            valueOfBuildWorksWithoutConsent:
              type: number
              description: >-
                This is to track the value of works carried out with no consent
                or certificate. Required if "Why are you applying for this
                certificate?" is selected as "Review unauthorised work" OR
                "Other".
              format: decimal
              maxLength: 10
            floorArea:
              type: number
              format: decimal
              maxLength: 10
            isAttachedToAuthorisedBuilding:
              type: boolean
          description: >-
            Applicable when reasonForApplying is Review unauthorised work or
            Other
        payerInformation:
          type: object
          required:
            - payerType
          properties:
            payerType:
              type: string
              description: >-
                To differentiate whether the payer is a company or an
                individual. 1. Individual 2. A company, business, government
                entity or other similar body
              example: Refer to description for values.
              minLength: 1
            payerPerson:
              $ref: '#/components/schemas/payerPerson'
            isManualEntry:
              type: boolean
              description: >-
                Used to indicate manual entry for payer company infromation if
                search ABN/ACN has not given desired payer company details. ABN
                and address of the payment company are mandatory company
                information is selected from system. Company name and address
                are mandatory if manually provided.
            payerCompany:
              $ref: '#/components/schemas/payerCompany'
        deltaDocuments:
          type: array
          items:
            $ref: '#/components/schemas/DownloadableDocument'
        documents:
          type: array
          items:
            $ref: '#/components/schemas/DownloadableDocument'
        declarations:
          type: array
          items:
            $ref: '#/components/schemas/Declaration'
        updatedBy:
          $ref: '#/components/schemas/UpdatedBy'
    applicantDetails:
      title: applicantDetails
      type: object
      properties:
        title:
          $ref: '#/components/schemas/Title'
        person:
          $ref: '#/components/schemas/Person'
    applicantCompany:
      title: applicantCompany
      type: object
      properties:
        companyName:
          maxLength: 150
          type: string
          description: >-
            If applicant is a company, provide the company name and mandatory
            when isManualEntry is true
        ABN:
          maxLength: 14
          type: string
          description: >-
            This is to track ABN of the company. it should be 14-digit number
            and mandatory when isManualEntry is false
        ACN:
          maxLength: 11
          type: string
          description: This is to track ACN of the company. it should be 11-digit number
        tradingName:
          maxLength: 256
          type: string
          description: Name of the trading
      description: If Apply on behalf of company is selected as 'Yes'
    payerCompany:
      title: applicantCompany
      required:
        - ABN
        - billingAddress
        - email
      type: object
      properties:
        companyName:
          maxLength: 150
          type: string
          description: >-
            If applicant is a company, provide the company name and mandatory
            when isManualEntry is true
        ABN:
          maxLength: 14
          type: string
          description: >-
            This is to track ABN of the company. it should be 14-digit number
            and mandatory when isManualEntry is false
          minLength: 1
        ACN:
          maxLength: 11
          type: string
          description: This is to track ACN of the company. it should be 11-digit number
        tradingName:
          maxLength: 256
          type: string
          description: Name of the trading
        billingAddress:
          type: string
          description: Company building address.
          minLength: 1
        email:
          maxLength: 250
          type: string
          format: email
          minLength: 1
      description: If Apply on behalf of company is selected as 'Yes'
    payerPerson:
      title: payerPerson
      type: object
      properties:
        firstName:
          maxLength: 20
          type: string
        otherName:
          maxLength: 20
          type: string
        familyName:
          maxLength: 20
          type: string
        contactNumber:
          maxLength: 10
          minLength: 8
          pattern: ^[0-9]+$
          type: string
        email:
          maxLength: 250
          type: string
          format: email
        billingAddress:
          maxLength: 250
          type: string
      description: Required if Payer Type selected as 'Individual'.
    Title:
      title: Title
      type: string
      description: Salutation 1. Miss 2. Mr 3. Mrs 4. Ms
      example: Refer to description for values.
    buildingStructureList:
      type: object
      required:
        - strctureType
      properties:
        strctureType:
          type: string
          description: >-
            This is to track building/structures that the Building Information
            Certificate would apply to. One or more values from the below list
            must be selected. 1. Whole of building 2. Part of building 3. Other
            structures
          example: Refer to description for values.
          minLength: 1
    BICWorkList:
      type: object
      properties:
        WorksHave:
          type: string
          description: >-
            This is to track the list of compliance items of the works. Visible
            if applicant selects "Review Unauthorized Work" for
            reasonForApplying. One or more values must be selected from the
            below list. 1. A compliance investigation being undertaken by
            council? 2. A development consent? 3. A modification consent? 4. A
            construction certificate? 5. None of the above
          example: Refer to description for values.
        applicationNumber:
          type: string
          description: >-
            applicable when applicant select any WorksHave. except None of the
            above
    ConstructionPersonDetails:
      type: object
      properties:
        title:
          $ref: '#/components/schemas/Title'
        firstName:
          maxLength: 20
          type: string
        otherName:
          maxLength: 20
          type: string
        familyName:
          maxLength: 20
          type: string
        contactNumber:
          maxLength: 10
          minLength: 8
          pattern: ^[0-9]+$
          type: string
        email:
          maxLength: 250
          type: string
          format: email
        addressPostal:
          maxLength: 250
          type: string
          description: Address of the person responsible for construction.
        licenceOrPermitNumber:
          type: string
      description: >-
        This is to track the person responsible for the construction. Applicable
        when reasonForApplying is Review unauthorised work or Other
    Declaration:
      type: string
      description: Declarations by applicant  for BIC case.
    DeferDetermination:
      required:
        - isWorksCompleted
      type: object
      properties:
        caseStatus:
          type: string
          description: >-
            This field is to track the case status of the defer determination
            request.
        WorkDescription:
          type: string
          description: >-
            This is to track the comments provided by council as part of defer
            determination request.
        isWorksCompleted:
          type: boolean
          description: This is to track works completed or not.
        worksNotCompletedReason:
          maxLength: 1000
          type: string
          description: >-
            This is to track the reason why Works are not completed. Applicable
            and mandatory when isWorksCompleted is false
        childCaseID:
          type: string
          description: This child case ID is to track the defer determination request.
          example: DEF-XXXX
        responseDate:
          type: string
          description: This is to track the date on which defer determination is provided.
          format: date
        documents:
          type: array
          items:
            $ref: '#/components/schemas/DownloadableDocument'
        updatedBy:
          $ref: '#/components/schemas/UpdatedBy'
